package main

import (
	"fmt"
	"strconv"
)

func main() {
	// 第一种方法使用 fmt.Sprintf()的返回值 //参考https://studygolang.com/pkgdoc
	var num1 int8 = 122
	var num2 float64 = 365.36
	var flag bool = true
	var str string

	//str = fmt.Sprintln(num1)
	str = fmt.Sprintf("%d", num1)
	fmt.Printf("str type is %T str=%q\n", str, str)

	str = fmt.Sprintf("%f", num2)
	fmt.Printf("str type is %T str=%q\n", str, str)

	str = fmt.Sprintf("%t", flag)
	fmt.Printf("str type is %T str=%q\n", str, str)

	//第二种方法 strconv函数 //参考https://studygolang.com/pkgdoc
	//第一个参数必须是int64类型的 第二个参数是转为多少进制的
	//str = strconv.FormatInt(int64(num1), 10) 跟Itoa方法类似
	str = strconv.Itoa(int(num1))
	fmt.Printf("str type is %T str=%q\n", str, str)

	//第一个参数是要转换的数据且是float64类型
	//格式说明符 ('f')'f' 表示使用普通的十进制小数表示法。还有其他格式说明符，比如 'e' 表示科学计数法（指数表示法）。
	//精度 (-1)： 这表示保留小数的位数。如果设置为负数，如 -1，则 FormatFloat 将使用最简短的表示方式，即只保留必要的位数。10则表示保留10位
	//位大小 (64)： 这表示浮点数的位大小，通常是 32 或 64。在这里，使用了 64，表示使用 float64 类型的浮点数。
	str = strconv.FormatFloat(num2, 'f', -1, 64)
	fmt.Printf("str type is %T str=%q\n", str, str)

	str = strconv.FormatBool(flag)
	fmt.Printf("str type is %T str=%q\n", str, str)

}
